[C] Apaga linha em um Arquivo
Publicado por Enzo de Brito Ferber 06/03/2006
[ Hits: 18.084 ]
Homepage: http://www.maximasonorizacao.com.br
Este script apaga a linha "dita" por um
usuário de um arquivo "dito" pelo mesmo.
Código de minha autoria bem comentado
e simples.... ajuda bastante a entender
manipulação de arquivos, aloção
dinamina de memoria, e maniputação de
strings....
/*********************************************************************************************
Programa: apaga.c
Autor: Enzo Ferber 'Slackware_10'
Propósito: Apaga linha definida por usuário em um arquivo
**********************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
int abreArquivo(char arquivo[]){
FILE *arqEntrada;
FILE *arqSaida;
int line = 0;
int linha = 1;
int i;
char textoArquivo[100];
char *output;
output = (char *)malloc((strlen(arquivo)+strlen(".editado")) * sizeof(char));
strcat(output, arquivo);
strcat(output, ".editado");
if((arqEntrada = fopen(arquivo, "r")) == 0){ //testa se o arquivo pode ser aberto
printf("Impossivel abrir arquivo...\n"); //informa o erro
exit(1); //finaliza execução
}
if((arqSaida = fopen(output, "w")) == 0){ //testa se o arquivo pode ser aberto
printf("Impossivel abrir arquivo...\n"); //informa o erro
exit(1); //finaliza execução
}
printf("Digite a linha a ser apagada no arquivo: "); //pede a linha
scanf("%d", &line); //le a linha e armazena na variável 'line'
rewind(arqEntrada); //certifica de que o cursor esta no primeiro caractere do arquivo
for(i = 0; !feof(arqEntrada);i++){ //incrementa 'i' enquando não for fim de arquivo
memset(textoArquivo, '{FONTE}', 100); //inicializa e/ou limpa string 'textoArquivo'
fgets(textoArquivo, 101, arqEntrada); //pega uma string de 100 caracteres
if(linha == line){ //se a linha for a escolhida
fputc('\n', arqSaida); //troca a linha que o usuario quer por nova linha
linha = linha + 1; //incrementa o contador de linhas
continue; //volta ao inicio do loop sem executar o resto
}
linha = linha + 1; //incrementa o contador de linas
fputs(textoArquivo, arqSaida); //coloca a string 'textoArquivo' no arquivo encoded.txt
}
printf("O arquivo output %c: %s\n",233, output);
free(output); //desaloca espaço alocado para string contendo novo do novo arquivo
fclose(arqEntrada); //fecha a stream 'arqEntrada'
fclose(arqSaida); //fecha a stream 'arqSaida'
}
int main(void){ //rotina principal do programa
char arquivo[100];
printf("Digite o caminho completo do arquivo: ");
__fpurge(stdin); //limpa buffer de entrada
scanf("%[^\n]", arquivo);
abreArquivo(arquivo);
}
Contando a quantidade de palavras de um arquivo texto
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









